home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 June: Reference Library / Dev.CD Jun 94.toast / Periodicals / develop / develop Issue 15 / develop 15 code / Floating Windows / Sample / Source / WindowExtensions.h < prev   
Encoding:
C/C++ Source or Header  |  1994-03-17  |  5.4 KB  |  181 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        WindowExtensions.h
  3.     
  4.     Contains:    Prototypes and data structures for the floating window library
  5.     
  6.     Written by:    Dean Yu
  7.     
  8.     Copyright:    © 1993 Apple Computer, Inc.
  9.     
  10. */
  11.  
  12. #ifndef __WINDOWEXTENSIONS__
  13. #define __WINDOWEXTENSIONS__
  14.  
  15. #ifndef __WINDOWS__
  16. #include <Windows.h>
  17. #endif
  18.  
  19. // Default to 68K calling conventions
  20.  
  21. #ifndef USESROUTINEDESCRIPTORS
  22. #define USESROUTINEDESCRIPTORS 0
  23. #endif
  24.  
  25. #ifndef __MIXEDMODE__
  26. #define kPascalStackBased                                0
  27. #define STACK_ROUTINE_PARAMETER(paramCount, paramSize)    0
  28. #endif
  29.  
  30. // Window Attributes
  31.  
  32. enum WindowAttributes {
  33.     kHasCloseBoxMask =                 0x00000001,
  34.     kHasZoomBoxMask =                 0x00000002,
  35.     kHasGrowBoxMask =                 0x00000004,
  36.     kHasModalBorderMask =             0x00000010,
  37.     kHasThickDropShadowMask =         0x00000020,
  38.     kHasDocumentTitlebarMask =         0x00001000,
  39.     kHasPaletteTitlebarMask =         0x00002000,
  40.     kHasRoundedTitlebarMask =         0x00004000,
  41.  
  42. // Attribute groupings
  43.  
  44.     kWindowGadgetsMask =            0x0000000F,
  45.     kWindowAdornmentsMask =            0x00000FF0,
  46.     kWindowTitlebarMask =            0x000FF000
  47. };
  48. typedef unsigned long WindowAttributes;
  49.  
  50. typedef struct WindowRecordExtensions *WindowRef;
  51.  
  52. // Activate event handler prototype
  53.  
  54. typedef pascal void (*ActivateHandlerProcPtr)(WindowRef theWindow, Boolean activateWindow);
  55.  
  56. enum {
  57.     uppActivateHandlerProcInfo = kPascalStackBased
  58.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowRef)))
  59.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean)))
  60. };
  61.  
  62. #if USESROUTINEDESCRIPTORS
  63. typedef UniversalProcPtr ActivateHandlerUPP;
  64.  
  65. #define CallActivateHandlerProc(userRoutine, theWindow, activateWindow)        \
  66.         CallUniversalProc(userRoutine, uppActivateHandlerProcInfo, theWindow, activateWindow)
  67. #define NewActivateHandlerProc(userRoutine)        \
  68.         (ActivateHandlerUPP) NewRoutineDescriptor(userRoutine, uppActivateHandlerProcInfo, GetCurrentISA())
  69. #else
  70. typedef ActivateHandlerProcPtr ActivateHandlerUPP;
  71.  
  72. #define CallActivateHandlerProc(userRoutine, theWindow, activateWindow)        \
  73.         (*userRoutine)(theWindow, activateWindow)
  74. #define NewActivateHandlerProc(userRoutine)        \
  75.         (ActivateHandlerUPP)(userRoutine)
  76. #endif
  77.  
  78. enum {
  79.     kActivateWindow                = true,
  80.     kDeactivateWindow            = false
  81. };
  82.  
  83. // Extensions to the WindowRecord
  84.  
  85. #if powerc
  86. #pragma options align=mac68k
  87. #endif
  88. struct WindowRecordExtensions {
  89.     WindowRecord                theWindow;
  90.     ActivateHandlerUPP            activateHandlerProc;
  91.     Boolean                        wasVisible;
  92. };
  93. #if powerc
  94. #pragma options align=reset
  95. #endif
  96.  
  97. typedef struct WindowRecordExtensions WindowRecordExtensions;
  98.  
  99. // 'WDEF' resource IDs.
  100.  
  101. enum {
  102.     rStandardDocumentWindowProc =    0,
  103.     rRoundedWindowProc =            1,
  104.     rFloatingWindowProc =            128
  105. };
  106.  
  107. // Window procIDs and windowKinds
  108.  
  109. enum {
  110.     kStandardDocumentWindowProc = rStandardDocumentWindowProc * 16,
  111.     kRoundedWindowProc = rRoundedWindowProc * 16,
  112.     kFloatingWindowProc = rFloatingWindowProc * 16,
  113.     
  114.     kApplicationFloaterKind = 7
  115. };
  116.  
  117. // Error codes
  118.  
  119. enum {
  120.     kUndefinedTitleBarTypeError = -1,
  121.     kWindowNotCreatedError = -2,
  122.     kInvalidWindowOrderingError = -3
  123. };
  124.  
  125. #ifdef __cplusplus
  126. extern "C" {
  127. #endif
  128.  
  129. // Floating window routines
  130.  
  131. extern pascal OSErr NewWindowReference(WindowRef *windowReference, const Rect *boundsRect, ConstStr255Param title, Boolean visible, WindowAttributes attributes, WindowRef behind, long refCon, ActivateHandlerUPP activateHandlerProc);
  132. extern pascal OSErr GetNewWindowReference(WindowRef *windowReference, short windResourceID, WindowRef behind, ActivateHandlerUPP activateHandlerProc);
  133. extern pascal void DisposeWindowReference(WindowRef windowReference);
  134. extern pascal void SelectReferencedWindow(WindowRef windowToSelect);
  135. extern pascal void HideReferencedWindow(WindowRef windowToHide);
  136. extern pascal void ShowReferencedWindow(WindowRef windowToShow);
  137. extern pascal void DragReferencedWindow(WindowRef windowToDrag, Point startPoint, const Rect *draggingBounds);
  138. extern pascal WindowRef FrontNonFloatingWindow(void);
  139. extern pascal WindowRef LastFloatingWindow(void);
  140. extern pascal Boolean WindowIsModal(WindowRef windowReference);
  141. extern pascal void DeactivateFloatersAndFirstDocumentWindow(void);
  142. extern pascal void ActivateFloatersAndFirstDocumentWindow(void);
  143. extern pascal void SuspendFloatingWindows(void);
  144. extern pascal void ResumeFloatingWindows(void);
  145. extern pascal void ValidateWindowList(void);
  146.  
  147. // Getters and Setters
  148.  
  149. extern pascal void GetWindowPortRect(WindowRef windowReference, Rect *portRect);
  150.  
  151. extern pascal short GetWindowKind(WindowRef windowReference);
  152. extern pascal void SetWindowKind(WindowRef windowReference, short windowKind);
  153.  
  154. extern pascal Boolean GetWindowVisible(WindowRef windowReference);
  155. extern pascal void SetWindowVisible(WindowRef windowReference, Boolean windowVisible);
  156.  
  157. extern pascal Boolean GetWindowHilite(WindowRef windowReference);
  158. extern pascal void SetWindowHilite(WindowRef windowReference, Boolean windowHilite);
  159.  
  160. extern pascal WindowRef GetNextWindow(WindowRef windowReference);
  161. extern pascal void SetNextWindow(WindowRef windowReference, WindowRef nextWindow);
  162.  
  163. extern pascal RgnHandle GetContentRegion(WindowRef windowReference);
  164.  
  165. extern pascal RgnHandle GetStructureRegion(WindowRef windowReference);
  166.  
  167. extern pascal Handle GetWindowDefProc(WindowRef windowReference);
  168.  
  169. extern pascal ActivateHandlerUPP GetActivateHandlerProc(WindowRef windowReference);
  170. extern pascal void SetActivateHandlerProc(WindowRef windowReference, ActivateHandlerUPP activateHandlerProc);
  171.  
  172. extern pascal Boolean GetWasVisible(WindowRef windowReference);
  173. extern pascal void SetWasVisible(WindowRef windowReference, Boolean wasVisible);
  174.  
  175. #ifdef __cplusplus
  176. }
  177. #endif
  178.  
  179. #endif
  180.  
  181.